home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / pm-utils / sleep.d / 98smart-kernel-video < prev    next >
Text File  |  2009-10-06  |  2KB  |  87 lines

  1. #!/bin/sh
  2. #
  3. # Copyright 2008 Victor Lowther <victor.lowther@gmail.com>
  4. #
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of version 2 of the GNU General Public License as
  7. # published by the Free Software Foundation.
  8.  
  9.  
  10. . "${PM_FUNCTIONS}"
  11.  
  12. remove_all_video_quirks()
  13. {
  14.     remove_parameters --quirk-dpms-on \
  15.         --quirk-dpms-suspend \
  16.     --quirk-s3-mode \
  17.         --quirk-s3-bios \
  18.     --quirk-vbe-post \
  19.     --quirk-vbe-post \
  20.     --quirk-vga-mode3 \
  21.     --quirk-vbemode-restore \
  22.     --quirk-vbestate-restore \
  23.     --quirk-reset-brightness \
  24.     --quirk-radeon-off \
  25.     --quirk-no-fb \
  26.     --quirk-pci-save
  27. }
  28.  
  29. # Test to see if the kernel has a video driver that is smart enough to
  30. # handle quirks without external assistance. If it is, remove the quirks.
  31. have_kms()
  32. {
  33.     # if we are running with a KMS-enabled video driver, we should not
  34.     # attempt to run any quirks
  35.     [ -d /sys/class/drm/card0/device/graphics/fb0 ] || return 1
  36.     remove_all_video_quirks
  37.     add_parameters --quirk-no-chvt
  38. }
  39.  
  40. have_nvidia()
  41. {
  42.     # despite the bad rep the nvidia driver has, it is miles better than
  43.     # any other video driver when it comes to handling power managment and
  44.     # suspend/resume in a quirk-free manner.
  45.     [ -d /sys/module/nvidia ] || return 1
  46.     remove_all_video_quirks
  47. }
  48.  
  49. have_fglrx()
  50. {
  51.     # the ATI driver is pretty good about it, too.
  52.     [ -d /sys/module/fglrx ] || return 1
  53.     remove_all_video_quirks
  54. }
  55.  
  56. have_smart_intel()
  57. {
  58.     # currently, intel kernel modesetting is not quite smart enough
  59.     # we still need acpi s3 kernel modesetting hooks, so don't remove those
  60.     # options if they were passed.
  61.     [ -d /sys/module/i915 ] || return 1
  62.     local kernel_rev="$(uname -r |awk -F '[_-]' '{print $1}')"
  63.     [ "$kernel_rev" \> "2.6.26" -o "$kernel_rev" = "2.6.26" ] || return 1
  64.     remove_parameters --quirk-dpms-on \
  65.         --quirk-dpms-suspend \
  66.     --quirk-vbe-post \
  67.     --quirk-vbe-post \
  68.     --quirk-vga-mode3 \
  69.     --quirk-vbemode-restore \
  70.     --quirk-vbestate-restore \
  71.     --quirk-reset-brightness \
  72.     --quirk-radeon-off \
  73.     --quirk-no-fb \
  74.     --quirk-pci-save
  75. }
  76.  
  77. smart_kernel_video() 
  78. {
  79.     have_kms || have_nvidia || have_fglrx || have_smart_intel || return $NA
  80. }
  81.  
  82. case $1 in
  83.      suspend|hibernate)
  84.     smart_kernel_video ;;
  85.      *) exit 0 ;;
  86. esac
  87.